package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoInsertFill;
import com.sky.annotation.AutoUpdateFill;
import com.sky.entity.Dish;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * DishMapper
 *
 * @author liliudong
 * @version 1.0
 * @description
 * @date 2023/7/28 14:13
 */
@Mapper
public interface DishMapper {
    /**
     * 插入
     *
     * @param dish 菜
     */
    @AutoInsertFill
    void insert(Dish dish);

    /**
     * 选择页面
     *
     * @param dish 菜
     * @return {@link Page}<{@link Dish}>
     */
    Page<Dish> selectPage(Dish dish);

    /**
     * 删除由ids
     *
     * @param ids id
     */
    void deleteByIds(List<Long> ids);

    /**
     * 选择通过id
     *
     * @param id id
     * @return {@link Dish}
     */
    Dish selectById(Long id);

    /**
     * 更新通过id
     *
     * @param dish 菜
     */
    @AutoUpdateFill
    void updateById(Dish dish);

    /**
     * 选择计数由ids与地位
     *
     * @param ids    id
     * @param status 启用
     * @return {@link Integer}
     */
    Integer selectCountByIdsWithStatus(List<Long> ids, Integer status);

    /**
     * 选择按类别id
     *
     * @param categoryId 类别id
     * @return {@link List}<{@link Dish}>
     */
    List<Dish> selectByCategoryId(Long categoryId);

    /**
     * 选择数量setmeal id和地位
     *
     * @param setmealId setmeal id
     * @param status    状态
     * @return {@link Integer}
     */
    Integer selectCountBySetmealIdAndStatus(Long setmealId, Integer status);
}
